package com.augurit.common.util.lang;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class DateUtils {
	/**
	 * 日期格式包含年、月、日、小时、分钟、秒,如：2003-10-01 10:20:15
	 */
	public final static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
	
	public final static String YYYY_MM_DD = "yyyy-MM-dd";
	
    public final static String YYYYMMDD = "yyyyMMdd";
    /**
     *日期格式包含年月日，如：2003年10月01日
     */
    public final static String YEAR_MOUTH_DAY_ = "yyyy年MM月dd日";
	  
	/**
	 * 将字符型数字转为Date类型
	 * @param value 要转换的字符
	 * @return Date类型的日期
	 * @throws ParseException 
	*/
	public static java.util.Date stringToDate(String dateString) throws ParseException {
		return stringToDate(dateString, YYYY_MM_DD_HH_MM_SS);
	}
	
	/**
	 * 将字符型数字转为Date类型
	 * @param value 要转换的字符
	 * @return Date类型的日期
	 * @throws ParseException 
	*/
	public static java.util.Date stringToDate(String dateString, String dateFormat){
		if(dateString != null && dateString.trim().length() > 0){
			SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.getDefault());
			try {
				Date date = sdf.parse(dateString);
				return date;
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		return null;
	}
	
	/**
	 * 把包含日期值转换为字符串
	 * @param date 日期（日期+时间）
	 * @param pattern 输出类型
	 * @return 字符串
	 */
	public static String dateTimeToString(java.util.Date date) {
		return dateTimeToString(date, YYYY_MM_DD_HH_MM_SS);
	}
	
	/**
	 * 把包含日期值转换为字符串
	 * @param date 日期（日期+时间）
	 * @param pattern 输出类型
	 * @return 字符串
	 */
	public static String dateTimeToString(java.util.Date date, String pattern) {
		String DateString = "";
		if (date == null) {
			DateString = "";
		} else {
			SimpleDateFormat formatDate = new SimpleDateFormat(pattern, Locale.getDefault());
			DateString = formatDate.format(date);
		}
		return DateString;
	}
	
	/**
	 * 判断两个日期型对象是否是同一天
	 * @param oneDay 一天
	 * @param anotherDay 另一天
	 * @return 是同一天返回true,否则返回false
	 */
	public static boolean isSameDay(java.util.Date oneDay, java.util.Date anotherDay){
		if(oneDay != null && anotherDay != null){
			return dateTimeToString(oneDay, "yyyy-MM-dd").equals(dateTimeToString(anotherDay, "yyyy-MM-dd"));
		}
		return false;
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}
	
}
